﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DAL.Entity;

namespace DAL.Persistencia
{
    public class UsuarioDAL
    {

        private NewTierraEntities Con;

        public UsuarioDAL()
        {
            Con = new NewTierraEntities();
        }

        public Usuario ObterPorId(int IdUsuario)
        {
            try
            {
                return Con.Usuarios.Where(u => u.US_id == IdUsuario).SingleOrDefault();
            }
            catch
            {
                throw;
            }
        }

        public Usuario ObterUsuario(string email, string senha)
        {
            try
            {
                return Con.Usuarios.Where(u => u.US_email.Equals(email) &&
                            u.US_senha.Equals(senha)).SingleOrDefault();

            }
            catch
            {
                throw;
            }
        }

        public void Salvar(Usuario u)
        {
            try
            {
                Con.AddToUsuarios(u);
                Con.SaveChanges();
            }
            catch
            {
                throw;
            }
        }

        public void Atualizar(Usuario novo)
        {
            try
            {
                Usuario antigo = ObterPorId(novo.US_id);

                antigo.US_nome = novo.US_nome;
                antigo.US_senha = novo.US_senha;
                antigo.US_email = novo.US_email;
                antigo.US_status = novo.US_status;
                antigo.Perfil_id = novo.Perfil_id;

                Con.SaveChanges();

            }
            catch
            {
                throw;
            }
        }

        public bool VerificaEmail(string email)
        {
            try
            {
                return Con.Usuarios.Where(u => u.US_email.Equals(email)).Count() != 0;
            }
            catch
            {
                throw;
            }
        }

        public List<Usuario> ListarTodos()
        {
            try
            {
                return Con.Usuarios.ToList();
            }
            catch 
            {                
                throw;
            }
        }

        public void Excluir(Usuario u)
        {
            try
            {
                Con.Usuarios.DeleteObject(u);
                Con.SaveChanges();
            }
            catch 
            {                
                throw;
            }
        }

    }
}
